package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.GaSubjectAccountConfig;
import com.jrx.anytxn.param.mapper.base.GaSubjectAccountConfigMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ext科目内部户配置表
 *
 * @author yf
 * date 2019/12/24 0024
 * @version V1.0
 **/
public interface ExtGaSubjectAccountConfigMapper extends GaSubjectAccountConfigMapper {

    /**
     * 根据租户ID查询列表信息
     * @author fan.yang
     * date: 2019/12/24 0024 下午 22:26
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.GaSubjectAccountConfig>
     */
    List<GaSubjectAccountConfig> selectByTenId(@Param("tenantId")String tenantId);

    /**
     * 根据租户ID，科目ID，产品ID查询信息
     * @author fan.yang
     * date: 2019/12/24 0024 下午 22:26
     * @param tenantId 租户ID
     * @param subjectId 科目ID
     * @param productId 产品ID
     * @return com.jrx.anytxn.param.entity.GaSubjectAccountConfig
     */
    GaSubjectAccountConfig selectBySubjectIdAndTenIdAndProId(@Param("tenantId")String tenantId, @Param("subjectId")String subjectId,@Param("productId") String productId);


    GaSubjectAccountConfig selectByTenantIdAndSubjectIdAndProdIdAndStatus(@Param("tenantId")String tenantId, @Param("subjectId")String subjectId,@Param("productId") String productId,@Param("tableStatus") String tableStatus);

    /**
     * 根据租户ID，科目ID，产品ID更新信息
     * @author fan.yang
     * date: 2019/12/24 0024 下午 22:26
     * @param gaSubjectAccountConfig 科目内部户配置信息
     * @return void
     */
    @ParamTuningAnnotation
    void updateByTenIdAndSubjectIdAndProId(GaSubjectAccountConfig gaSubjectAccountConfig);

    /**
     * 根据租户ID，科目ID，产品ID删除信息
     * @author fan.yang
     * date: 2019/12/24 0024 下午 22:26
     * @param tenantId 租户ID
     * @param subjectId 科目ID
     * @param productId 产品ID
     * @return int
     */
    @ParamTuningAnnotation
    int deleteByTenIdAndSubjectIdAndProId(@Param("tenantId") String tenantId, @Param("subjectId") String subjectId,@Param("productId") String productId);

    GaSubjectAccountConfig selectByIdAndSubjectIdAndTenIdAndProId(@Param("id") Long id,@Param("tenantId")String tenantId, @Param("subjectId")String subjectId,@Param("productId") String productId);

}
